package com.dragon.modules.yuegou.enums.order;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 订单状态
 * 
 * @author pbuilder generated
 *
 */
public enum OrderStatus {

	/**
	 * 未付款
	 */
	NOTPAY(0, "未付款"),
	/**
	 * 已付款/待接单
	 */
	PAID(1, "已付款/待接单"),
	/**
	 * 已完成
	 */
	SUCCEED(2, "已完成"),
	/**
	 * 已关闭
	 */
	CLOSED(3, "已关闭"),
	/**
	 * 已发货/配送中
	 */
	SHIPPING(4, "已发货/配送中"),
	/**
	 * 已过期
	 */
	EXPIRED(5, "已过期"),
	/**
	 * 待配送
	 */
	WAITPOST(6, "待配送"),
	/**
	 * 部分退款
	 */
	PART_REFUND(7,"部分退款"),
	
	/**
	 * 全部退款
	 */
	ALL_REFUND(8,"部分退款");
	/**
	 * 枚举标识
	 */
	private final Integer code;

	/**
	 * 别名
	 */
	private final String alias;

	private OrderStatus(Integer code, String alias) {
		this.code = code;
		this.alias = alias;
	}
	
	public Integer getValue() {
		return code;
	}

	/**
	 * 枚举标识
	 * 
	 * @return code
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 别名
	 * 
	 * @return alias
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 把code转化为费用类型枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	@JsonCreator
	public static OrderStatus from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for OrderStatus
	 */
	private static final Map<Integer, OrderStatus> CODE_MAP = Stream.of(OrderStatus.values())
			.collect(Collectors.toMap(OrderStatus::getCode, e -> e));

}
